package ru.chezclif.lern.conread;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import ru.chezclif.lern.conread.parser.PathDataInputProperties;
import com.thoughtworks.xstream.XStream;
/**
 * Сохранение настроек из хранилища данных в xml файл
 * @author Vit
 *
 */
public class XmlSaver implements PathDataInputProperties {
	private OutputStream xmlOutputStream;
	private XStream xmlStream;
	@Override
	/**По параметру filePath находится\создается файл, в него записываются все настройки и комментарии
	 *@param filePath полный путь к оперируемому файлу
	 *@param propertyBuffer хранилище данных с настройками для записи в файл*/
	public void parseFile(String filePath, DataBuffer propertyBuffer) {
			Preconditions.notBlank(filePath);
			Preconditions.notNull(filePath);
			Preconditions.notNull(propertyBuffer);
				try {
				xmlOutputStream = new FileOutputStream(new File(filePath));
				//Смена кодировки Writer xmlStreamWriter= new OutputStreamWriter(xmlOutputStream);
					xmlStream = new XStream();
					//xmlStream.alias("Properties", DataBuffer.class);
					xmlStream. toXML(propertyBuffer, xmlOutputStream);
					xmlOutputStream.close();
				} catch (FileNotFoundException e) {
					throw new ru.chezclif.lern.conread.exceptions.FileNotFoundException(e, filePath);
				} catch (IOException e) {
					throw new ru.chezclif.lern.conread.exceptions.FileNotFoundException(e, filePath);
				}  		
	}
}
